Computing appliances, e.g., computer systems, servers, networking switches and routers, wireless communication devices, and other electronic devices are typically comprised of a number of electronic components, or elements. Such elements often include a processor, microcontroller or other control logic, a memory system, input and output interface(s), peripheral elements and the like. To facilitate communication between such elements, computing appliances have long relied on a general purpose input/output (GIO) bus architecture to enable these disparate elements of the computing appliance to communicate with one another in support of the myriad of applications offered by such appliances.
Perhaps one of the most pervasive of such conventional GIO bus architectures is the peripheral component interconnect bus, or PCI, bus architecture. The PCI bus standard (Peripheral Component Interconnect (PCI) Local Bus Specification, Rev. 2.2, released Dec. 18, 1998) defines a multi-drop, parallel bus architecture for interconnecting chips, expansion boards, and processor/memory subsystems in an arbitrated fashion within a computing appliance. The content of the PCI local bus standard is expressly incorporated herein by reference, for all purposes.
While conventional PCI bus implementations have a 133 MBps throughput (i.e., 32 bytes at 33 MHz), the PCI 2.2 standard allows for 64 bytes per pin of the parallel connection clocked at up to 133 MHz resulting in a theoretical throughput of just over 1 GBps. In this regard, the throughput provided by such conventional multi-drop PCI bus architectures has, until recently, provided adequate bandwidth to accommodate the internal communication needs of even the most advanced of computing appliances (e.g., multiprocessor server applications, network appliances, etc.). However, with recent advances in processing power taking processing speeds above the 1 Ghz threshold, coupled with the widespread deployment of broadband Internet access, conventional GIO architectures such as the PCI bus architecture have become a bottleneck within such computing appliances.
Another limitation commonly associated with conventional GIO architectures is that they are typically not well-suited to handle/process isochronous (or, time dependent) data streams. An example of just such an isochronous data stream is multimedia data streams, which require an isochronous transport mechanism to ensure that the data is consumed as fast as it is received, and that the audio portion is synchronized with the video portion.
Conventional GIO architectures process data asynchronously, or in random intervals as bandwidth permits. Such asynchronous processing of isochronous data can result in misaligned audio and video and, as a result, certain providers of isochronous multimedia content have rules that prioritize certain data over other data, e.g., prioritizing audio data over video data so that at least the end-user receives a relatively steady stream of audio (i.e., not broken-up) so that they may enjoy the song, understand the story, etc. that is being streamed.